package cn.iocoder.yudao.module.trade.controller.admin.orderpostback.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;

import java.time.LocalDate;
import java.util.*;
import javax.validation.constraints.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;

@Schema(description = "管理后台 - 订单回传新增/修改 Request VO")
@Data
public class OrderPostBackSaveReqVO {

    @Schema(description = "主键自增", requiredMode = Schema.RequiredMode.REQUIRED, example = "10467")
    private Long id;

    @Schema(description = "订单id", requiredMode = Schema.RequiredMode.REQUIRED, example = "13479")
    @NotNull(message = "订单id不能为空")
    private Long orderId;

    @NotNull(message = "回传配置ID")
    private Long drainageConfigId;

    @NotNull(message = "回传配置CODE")
    private String drainageCode;

    @Schema(description = "订单类型（1-支付；2-退款）", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    @NotNull(message = "订单类型（1-支付；2-退款）不能为空")
    private Integer orderType;

    @Schema(description = "第三方id", requiredMode = Schema.RequiredMode.REQUIRED, example = "26588")
    @NotEmpty(message = "第三方id不能为空")
    private String thirdId;

    @Schema(description = "第三方类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
    @NotNull(message = "第三方类型不能为空")
    private Integer thirdType;

    @Schema(description = "支付金额（总），单位：分", requiredMode = Schema.RequiredMode.REQUIRED, example = "20021")
    @NotNull(message = "支付金额（总），单位：分不能为空")
    private Integer payPrice;

    @Schema(description = "回传金额（总），单位：分", requiredMode = Schema.RequiredMode.REQUIRED, example = "30907")
    @NotNull(message = "回传金额（总），单位：分不能为空")
    private Integer postPrice;

    @Schema(description = "状态(-1：失败；0：待回传；1-已完成；2-扣量)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    @NotNull(message = "状态(-1：失败；0：待回传；1-已完成；2-扣量)不能为空")
    private Integer status;

    @Schema(description = "订单时间")
    private LocalDateTime orderTime;

    @Schema(description = "订单日期")
    private LocalDate orderDate;

    @Schema(description = "回传时间")
    private LocalDateTime postTime;

}